home *** CD-ROM | disk | FTP | other *** search
- struct port_data {
- int uart_address;
- int head_pointer;
- int tail_pointer;
- char buffer[ 1024 ];
- };
-
- void far interrupt isr()
- {
- unsigned char c;
- int space_used;
-
- c = ( unsigned char ) inp( port.uart_address );
- space_used = port.head_pointer - port.tail_pointer;
- if ( space_used < 0 )
- space_used += 1024;
- if ( space_used < 1023 ) {
- port.buffer[ port.head_pointer++ ] = c;
- port.head_pointer &= 1023;
- }
- outp( 0x20, 0x20 );
- }
-
-
-